package com.mingyizhudao.app.view.notify;

import android.app.Notification;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import com.dixiang.framework.config.SystemConfig;
import com.google.gson.Gson;
import com.mingyizhudao.app.R;
import com.mingyizhudao.app.utils.CommonUtils;
import com.mingyizhudao.app.utils.Constants;
import com.mingyizhudao.app.utils.IntentHelper;
import com.mingyizhudao.app.view.MainActivity;
import com.mingyizhudao.app.view.WebViewActivity;
import com.mingyizhudao.app.view.login.LoginActivity2;
import com.mingyizhudao.app.view.notify.NotifyBean.ADNotify;
import com.mingyizhudao.app.view.notify.NotifyBean.Notify;

import java.util.Iterator;
import java.util.Map;

//import cn.jpush.android.api.BasicPushNotificationBuilder;
//import cn.jpush.android.api.CustomPushNotificationBuilder;
//import cn.jpush.android.api.JPushInterface;

/**
 * 自定义接收器
 * 
 * 如果不定义这个 Receiver，则：
 * 1) 默认用户会打开主界面
 * 2) 接收不到自定义消息
 */
public class MyReceiver extends BroadcastReceiver {
	private static final String TAG = "JPush";

	@Override
	public void onReceive(Context context, Intent intent) {
//		Bundle bundle = intent.getExtras();
//		Log.d(TAG, "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));
//
//		if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
//			String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
//			Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId);
//			//send the Registration Id to your server...
//
//		} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
//			Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));
//			processCustomMessage(context, bundle);
//
//		} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
//			Log.d(TAG, "[MyReceiver] 接收到推送下来的通知");
//			int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
//			Log.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);
//
//			//          BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(context);
//			//    		builder.statusBarDrawable = R.drawable.jpush_notification_icon;
//			//    		builder.notificationFlags = Notification.FLAG_AUTO_CANCEL;  //设置为点击后自动消失
//			//    		builder.notificationDefaults = Notification.DEFAULT_SOUND;  //设置为铃声（ Notification.DEFAULT_SOUND）或者震动（ Notification.DEFAULT_VIBRATE）  
//			//    		JPushInterface.setPushNotificationBuilder(1, builder);
//
//			String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
//			System.out.println("extras:"+extras);
//
//
//
//		} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
//			Log.d(TAG, "[MyReceiver] 用户点击打开了通知");
//
//			String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
//			System.out.println("extras:"+extras);
//
//			try
//			{
//
//				Gson gson = new Gson();
//				NotifyBean notifyBean = gson.fromJson(extras, NotifyBean.class);
//
//				//Notify notify = notifyBean.getData();
//
//				Notify notify =  gson.fromJson(notifyBean.getData(), Notify.class);
//				Bundle bundle2 = new Bundle();
//				if( "web".equals( notify.getType() ) )
//				{
//
//					bundle2.putString(Constants.PARM_ACTION_URL, notify.getUrl());
//					bundle2.putString(Constants.PARM_PAGE_TITLE, notify.getTitle());
//
//					//打开自定义的Activity
//					Intent i = new Intent(context, WebViewActivity.class);
//					i.putExtras(bundle2);
//					//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//					i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
//					context.startActivity(i);
//
//				}else if ("app".equals( notify.getType() )) {
//
//					String code[] = notify.getAdVersionCode();
//
//					if (isCan(code,context)) {
//						
//						if ("1".equals(notify.getIsNeedLogin())) {
//							
//							String mobile =CommonUtils.getMobile( context );
//							String token =CommonUtils.getToken( context );
//							
//							
//							if( token!=null&&token.length()>0&&mobile!=null&&mobile.length()>0 )//已经登录
//							{
//								ADNotify adNotify = notify.getAd();
//								Class<?> cName = Class.forName(adNotify.getClassname());
//								Map<String,Object> param =  adNotify.getParam();
//								for (Map.Entry<String, Object> entry : param.entrySet()) {
//									String key = entry.getKey();
//									String value = entry.getValue().toString();
//									bundle2.putString(key, value);
//								} 
//								//打开自定义的Activity
//								Intent i = new Intent(context, cName);
//								i.putExtras(bundle2);
//								//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//								i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
//								context.startActivity(i);
//							}else {//没有登录，跳转登录
//								
//								ADNotify adNotify = notify.getAd();
//								bundle2.putSerializable("adNotify", adNotify);
//								//打开自定义的Activity
//								Intent i = new Intent(context, LoginActivity2.class);
//								i.putExtras(bundle2);
//								//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//								i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
//								context.startActivity(i);
//								
//							}
//							
//							
//						}else {
//							
//							ADNotify adNotify = notify.getAd();
//							Class<?> cName = Class.forName(adNotify.getClassname());
//							Map<String,Object> param =  adNotify.getParam();
//							for (Map.Entry<String, Object> entry : param.entrySet()) {
//								String key = entry.getKey();
//								String value = entry.getValue().toString();
//								bundle2.putString(key, value);
//							}
//							
//							
//							
//							//打开自定义的Activity
//							Intent i = new Intent(context, cName);
//							i.putExtras(bundle2);
//							//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//							i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
//							context.startActivity(i);
//						}
//						
//						
//						
//					}else {
//						Toast.makeText(context, "请更新版本后再查看详情", Toast.LENGTH_SHORT).show();
//					}
//
//				}
//
//			}
//			catch( Exception e )
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}  
//
//		} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
//			Log.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
//			//在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码，比如打开新的Activity， 打开一个网页等..
//
//		} else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
//			boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
//			Log.w(TAG, "[MyReceiver]" + intent.getAction() +" connected state change to "+connected);
//		} else {
//			Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());
//		}
	}

	// 打印所有的 intent extra 数据
//	private static String printBundle(Bundle bundle) {
//		StringBuilder sb = new StringBuilder();
//		for (String key : bundle.keySet()) {
//			if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
//				sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
//			}else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){
//				sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
//			} else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
//				if (bundle.getString(JPushInterface.EXTRA_EXTRA).isEmpty()) {
//					Log.i(TAG, "This message has no Extra data");
//					continue;
//				}
//
//				try {
//					JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
//					Iterator<String> it =  json.keys();
//
//					while (it.hasNext()) {
//						String myKey = it.next().toString();
//						sb.append("\nkey:" + key + ", value: [" +
//								myKey + " - " +json.optString(myKey) + "]");
//					}
//				} catch (JSONException e) {
//					Log.e(TAG, "Get message extra JSON error!");
//				}
//
//			} else {
//				sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
//			}
//		}
//		return sb.toString();
//	}


	private boolean isCan(String api[],Context context){
		
		String code = ""+CommonUtils.getAppVersionCode(context);
		
		if (api==null) {
			return false;
		}else {
			for (int i = 0; i < api.length; i++) {
				if (code.equals(api[i]) ) {
					return true;
				}
			}
		}
		return false;

	}


	//send msg to MainActivity
	private void processCustomMessage(Context context, Bundle bundle) {

//		String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
//		String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
//
//		System.out.println("message:"+ message + "extras"+ extras);
//		if (MainActivity.isForeground) {
//			String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
//			String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
//			Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION);
//			msgIntent.putExtra(MainActivity.KEY_MESSAGE, message);
//			if (!ExampleUtil.isEmpty(extras)) {
//				try {
//					JSONObject extraJson = new JSONObject(extras);
//					if (null != extraJson && extraJson.length() > 0) {
//						msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras);
//					}
//				} catch (JSONException e) {
//
//				}
//
//			}
//			context.sendBroadcast(msgIntent);
//		}
	}


//	/**
//	 *设置通知提示方式 - 基础属性
//	 */
//	private void setStyleBasic(){
//		BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(PushSetActivity.this);
//		builder.statusBarDrawable = R.drawable.ic_launcher;
//		builder.notificationFlags = Notification.FLAG_AUTO_CANCEL;  //设置为点击后自动消失
//		builder.notificationDefaults = Notification.DEFAULT_SOUND;  //设置为铃声（ Notification.DEFAULT_SOUND）或者震动（ Notification.DEFAULT_VIBRATE）  
//		JPushInterface.setPushNotificationBuilder(1, builder);
//	}
}
